/* 编译命令 g++ main.cpp -lpthread */

#include <iostream>
#include <unistd.h>
#include <pthread.h>

using namespace std;

#define NUM_THREAD 5

void* thread_entry(void* args)
{
	sleep(1);
	cout << "Hello World" << endl;
	return 0;
}

int main(void)
{
	// 线程句柄
	pthread_t tids[NUM_THREAD];

	// cout << "Sleep Begin" << endl;
	// sleep(2);
	// cout << "Sleep Finish" << endl;

	for (int i = 0; i < NUM_THREAD; i++)
	{
		int ret = pthread_create(&tids[i], NULL, thread_entry, NULL);
		if (ret != 0)
		{
			cout << "pthread creat error: error code= " << ret << endl;
		}
	}

	// pthread_exit 用于显式的退出的一个线程。通常情况下，pthread_exit() 函数是在线程完成工作后无需继续存在时被调用。
	// 如果main() 是在它所创建的线程之前结束，并通过pthread_exit()退出，那么其他线程将继续执行。否则，它们将在main()函数结束时自动被终止。
	pthread_exit(NULL);
}

